#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;

/**
 * 函数功能：
 * 根据字符串参数 s，计算 s 里所有字母出现的次数，保存到数组 p 中
 * 并计算出现次数最多的字符，赋值给 chmax, 该字符出现的次数，赋值给 max
 * 本函数不需要返回数据
 * aA字符出现的次数，保存到 p[0] 中
 * bB字符出现的次数，保存到 p[1] 中
 * cC字符出现的次数，保存到 p[2] 中
 * 依此类推
 */
void freq(char s[], int p[], char &chmax, int &max){
  int i;
  // 初始化数组 p
  for (i = 0; i < 26; i++)
    p[i] = 0; // 初始化每个字母出现的次数为 0
  strlwr(s);  // 将字符串中的大写字母，转为小写字母，方便计算。 注：这行改变了原来字符串，所以，调用本函数后，无法再输出原来的串了
  
  i = 0; // 开始统计
  while (s[i] != '\0') {
    if (s[i] > 'a' && s[i] <= 'z') // 这里需要加个判断，防止 p 数组越界（越界可能出错 ）
      p[(s[i] - 'a')]++;           // s[i] - 'a' 肯定是 0~25 之内的整数
    i++;
  }
  
  max = p[0]; // 统计结束，要查找最多次数的字母
  int k = 0;
  for (i = 1; i < 26; i++)  {  // i 是字母的序号
    if (p[i] > max)  {
      max = p[i];  // max 是引用参数，直接赋值，在函数结束后，原来传递过来的变量，值也会变
      k = i;
    }
  }
  chmax = k + 97;  // chmax 是引用参数，直接赋值，在函数结束后，原来传递过来的变量，值也会变
}

int main(){
  int p[26], i, max;
  char s[80], chmax;
  gets(s);
  freq(s, p, chmax, max);
  for (i = 0; i < 26; i++)                            // 对26个字母循环
    if (p[i])                                         // 有字母出现的，才输出
      cout << char(i + 97) << "----" << p[i] << endl; // 这里的 97, 应该改为 'a' 更好理解
  cout << chmax << "----" << max << endl;             // 输出最大字母
  system("pause");
  return 0;
}